using System;
using DataLayer;
using ListaDatos = CodeSoft.Datos.ListaDatos;


namespace CodeSoft.Logica
{
	/// <summary>
	/// Summary description for Organizacion.
	/// </summary>
	public class Organizacion:OrigenDatos
	{
		private string nombre;
		private string domicilio;
		private string telefono;
		private Miembro contacto;
		
		public Organizacion():base(ListaDatos.Obtener("Organizaciones")) {}
		public Organizacion(Registro reg):base(reg) {}
		public Organizacion(int id):base(ListaDatos.Obtener("Organizaciones"),id) {}

		
				public Miembro Contacto
				{
					get
					{
						if (contacto == null && Registro!=null)
							contacto = (! Registro.DataRow.IsNull("idContacto"))? new Miembro((int)Registro.DataRow["idContacto"]) : null;
		
						return contacto;
					}
					set { contacto = value; }
				}
		
		public string Nombre
		{
			get { return nombre; }
			set { nombre = value; }
		}

		public string Domicilio
		{
			get { return domicilio; }
			set { domicilio = value; }
		}

		public string Telefono
		{
			get { return telefono; }
			set { telefono = value; }
		}


		public override bool InicializarRegistro()
		{
			if (Registro != null)
			{
				Nombre = (! Registro.DataRow.IsNull("Nombre"))?(string)Registro.DataRow["Nombre"]:"";
				Telefono = (! Registro.DataRow.IsNull("Telefono")) ? (string) Registro.DataRow["Telefono"] : "";
				Domicilio = (! Registro.DataRow.IsNull("Domicilio")) ? (string) Registro.DataRow["Domicilio"] : "";
				
				return true;
			}
			return false;
		}

		public override bool AsignarRegistro()
		{
			if (Registro != null)
			{
				Registro.DataRow["idContacto"] = (Contacto!=null && Contacto.ID>0)? (object)Contacto.ID:DBNull.Value;
				Registro.DataRow["Nombre"] = Nombre;
				Registro.DataRow["Telefono"] = Telefono;
				Registro.DataRow["Domicilio"] = Domicilio;
				return true;
			}
			return false;
		}

		public override string ToString()
		{
			return Nombre.ToString();
		}

		public new void Update()
		{
			if (! EsNuevo)
			{
				Refresh();

				if(Contacto != null)
					Contacto.Refresh();
			}
		}
	}
}

